package com.example.mybatis_plus_use.Interceptor;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * Web全局配置类
 * 用于配置拦截器、跨域等全局Web配置
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Autowired
    private BusinessInterceptor businessInterceptor;
//    @Autowired
//    private RequestLogInterceptor requestLogInterceptor;  // 日志拦截器
//    @Autowired
//    private CustomInterceptor customInterceptor;          // 自定义拦截器

    /**
     * 添加拦截器配置
     *
     * @param registry 拦截器注册表
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(businessInterceptor).addPathPatterns("/**");  // 拦截所有请求
//不带 token 访问需要认证的接口：
    }
    //请求
    //-> JWT拦截器（验证token）
    //   - token无效：返回401，请求结束
    //   - token有效：继续
    //-> Login拦截器（再次验证token）
    //   - token无效：返回401，请求结束
    //   - token有效：继续
    //-> Controller
    // 跨域配置
    @Override
    public void addCorsMappings(CorsRegistry registry) {//跨域的配置
        registry.addMapping("/**")  // 所有接口
                .allowedOrigins("http://localhost:8081")  // 允许的源
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")  // 允许的HTTP方法
                .allowedHeaders("*")  // 允许的请求头
                .allowCredentials(true)  // 允许携带cookie
                .maxAge(3600);  // 预检请求的有效期，单位为秒
    }
}
// 日志拦截器（拦截所有请求）
//        registry.addInterceptor(requestLogInterceptor)
//                .addPathPatterns("/**");

// 自定义拦截器（只拦截特定路径）
//        registry.addInterceptor(customInterceptor)
//                .addPathPatterns("/api/**")         // 拦截/api/开头的请求
//                .excludePathPatterns("/api/public/**"); // 排除公开接口